package model.core.utente;

import model.utility.Utility;

import java.util.ArrayList;

/**
 * 
 * @author Giuseppe Fusco (fusgius19@gmail.com)
 *
 */
public class Squadra extends AbstractDomainModelObservable implements GiocatoreInterface {

	private Commissario presidente;

	private Giocatore capitano;

	private ArrayList<Giocatore> partecipanti;

	private int partite_giocate;

	private int partite_vinte;

	private int partite_perse;

	private int totale_punti;
	private String nome;

	public Squadra(){
		partite_giocate=0;
		partite_vinte=0;
		partite_perse=0;
		totale_punti=0;
		partecipanti = new ArrayList<Giocatore>();
	}
	
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public Giocatore getCapitano() {
		return capitano;
	}

	public Commissario getPresidente() {
		return presidente;
	}

	public boolean setCapitano(Giocatore giocatore) {
		if(Utility.isThereGiocatore(partecipanti, giocatore))
				{
			for(int i=0; i<partecipanti.size(); i++)
				if(partecipanti.get(i).equals(capitano)){
					partecipanti.set(i, giocatore);
					break;
				}
			this.capitano = giocatore;
			return true;
				}
		else
			return false;
	}

	public void setPresidente(Commissario presidente) {
		this.presidente = presidente;
	}

	public boolean addGiocatore(Giocatore giocatore) {
		if(Utility.isThereGiocatore(partecipanti, giocatore))
				return false;
		else
			return partecipanti.add(giocatore);
	}

	public boolean removeGiocatore(Giocatore giocatore) {
		if(Utility.isThereGiocatore(partecipanti, giocatore))
				{
			for(Giocatore g: partecipanti)
				if(g.equals(capitano))
					capitano=null;
			return partecipanti.remove(giocatore);
				}
		else
			return false;
	}


	public ArrayList<Giocatore> getPartecipanti() {
		return partecipanti;
	}

	public void setPartecipanti(ArrayList<Giocatore> partecipanti) {
		this.partecipanti = partecipanti;
	}

	public int getPartite_giocate() {
		return partite_giocate;
	}

	public void setPartite_giocate(int partite_giocate) {
		this.partite_giocate = partite_giocate;
	}

	public int getPartite_vinte() {
		return partite_vinte;
	}

	public void setPartite_vinte(int partite_vinte) {
		this.partite_vinte = partite_vinte;
	}

	public int getPartite_perse() {
		return partite_perse;
	}

	public void setPartite_perse(int partite_perse) {
		this.partite_perse = partite_perse;
	}

	public int getTotale_punti() {
		return totale_punti;
	}

	public void setTotale_punti(int totale_punti) {
		this.totale_punti = totale_punti;
	}

	/**
	 * @see model.core.utente.GiocatoreInterface#partitePareggiate()
	 */
	public int partitePareggiate() {
		return 0;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		if(obj instanceof Squadra){
			Squadra s = (Squadra)obj;
			if(s.getNome().equals(getNome()))
				return true;
			else
				return false;
		}
		else
			return false;
	}
}
